pomalost Firebirdu

Otázka od: Josef Zahoralek

29. 7. 2004 10:25

Ahoj,

mam na jednom PC nainstalovan Firebird 1.5.1 (superserver) a MSDE na obou
vytvorenou databazi s tabulkou stroje ktera ma asi 13000000 zaznamu - pokud
udelam select:

SELECT *
FROM stroje
WHERE (new_value LIKE '%Oprava stroje%') AND (machine = 210)


tak na Firebirdu to trva asi 1,5 minuty a na MSDE asi 2 vteriny, Firebird si
vezme asi 9,5 MB RAM a MSDE 380 MB (na PC je 1 GB RAM a Windows2000)

v konfiguraci Firebirdu je vsechno default mimo tyto hodnoty:
DefaultDbCachePages=4096
MaxUnflushedWrites=500
MaxUnflushedWriteTime=10
LockMemSize=524288

databaze ma nastaven asynchronni zapis, nevite nekdo jak nastavit Firebird
tak aby byl alespon stejne rychly jako MSDE ? (jeste podotykam ze kdyz jsem
testoval rychlost Firebirdu tak bylo MSDE stopnuty tak aby neuziralo pamet)

Josef.


Odpovedá: Milan Tomes

29. 7. 2004 10:39

Mam obavu, ze nastaveni FireBirdu v tomto smeru nepomuze. IMHO pouziti LIKE
na FireBirdu znemozni pouziti indexu a nejakeho lexikalniho porovnavani,
tudiz se musi "prolezt" vsechny zaznamy postupne. A 13.000.000 zaznamu za
1,5 minuty pokladam za dost dobry vysledek  
Jedine co by mohlo pomoci je zrusit pouziti LIKE a dat tam tvrde porovnani
na konkretni hodnotu a u prislusneho sloupce zalozit prislusny index (viz.
spousta debat na tema ladeni rychlosti apod...)

S pozdravem

Milan Tomes

> [mailto:delphi-l-owner@clexpert.cz]On Behalf Of Josef Zahoralek
> Sent: Thursday, July 29, 2004 10:46 AM
>
> mam na jednom PC nainstalovan Firebird 1.5.1 (superserver) a MSDE na obou
> vytvorenou databazi s tabulkou stroje ktera ma asi 13000000
> zaznamu - pokud
> udelam select:
>
> SELECT *
> FROM stroje
> WHERE (new_value LIKE '%Oprava stroje%') AND (machine = 210)
>
> tak na Firebirdu to trva asi 1,5 minuty a na MSDE asi 2 vteriny,
> Firebird si
> vezme asi 9,5 MB RAM a MSDE 380 MB (na PC je 1 GB RAM a Windows2000)


Odpovedá: MMiro

30. 7. 2004 6:54

Ahoj
neni to len nejaka cvicna tabulka s rovnakymi hodnotami?
Tie dve sekundy na vyhladanie zaznamov, ktore kdekolvek v sebe obsahuju
hladany retazec - to je teda naozaj rekordny cas.
Co to moze byt za algoritmus?

Miro
----- Original Message -----
From: "Josef Zahoralek" <joszah@tiscali.cz>
13000000 zaznamu - pokud
> SELECT *
> FROM stroje
> WHERE (new_value LIKE '%Oprava stroje%') AND (machine = 210)
> tak na Firebirdu to trva asi 1,5 minuty a na MSDE asi 2 vteriny, Firebird
si


Odpovedá: Pavel Cisar

30. 7. 2004 9:04

Haj hou!

On 29 Jul 2004 at 10:45, Josef Zahoralek wrote:

> mam na jednom PC nainstalovan Firebird 1.5.1 (superserver) a MSDE na obou
> vytvorenou databazi s tabulkou stroje ktera ma asi 13000000 zaznamu - pokud
> udelam select:
>
> SELECT *
> FROM stroje
> WHERE (new_value LIKE '%Oprava stroje%') AND (machine = 210)
>
> tak na Firebirdu to trva asi 1,5 minuty a na MSDE asi 2 vteriny, Firebird si
> vezme asi 9,5 MB RAM a MSDE 380 MB (na PC je 1 GB RAM a Windows2000)

Predpokladam, ze zaznamu s (machine = 210) je jen par a je na nem
index ? Pak chapu proc to MSDE trva 2s, ale nechapu, proc to FB trva
1.5min. Leda ze by db pro Firebird nemela index na machine ? Muzes
pro zajimavost napsat jaky provadeci plan Firebird pouzil ?

S pozdravem
Pavel Cisar ( ICQ: 89017288)
Mobil: 724 281429
http://www.ibphoenix.cz
Vse co potrebujete pro Firebird a InterBase


Odpovedá: Jan Novak

30. 7. 2004 8:50

>> WHERE (new_value LIKE '%Oprava stroje%') AND (machine = 210)

> dve sekundy na vyhladanie zaznamov, ktore kdekolvek v sebe
> obsahuju hladany retazec - to je teda naozaj rekordny cas.

Spis bych rek, ze FB vyhodnocuje podminku striktne zleva doprava, ale
MSSQL si zjisti, ze bude vyhodnejsi vyhledat tech par zaznamu
vyhovujicich podmince 'machine' (asi ma index) a jen tam smejdit po
Oprave.

Otazka je, ktere chovani je lepsi, zda slepe poslouchani programatora,
nebo urcita inteligence. Ja osobne moc chytre programy rad nemam.


Odpovedá: Jan Kostial

30. 7. 2004 9:24

> > SELECT *
> > FROM stroje
> > WHERE (new_value LIKE '%Oprava stroje%') AND (machine = 210)


Nie som znalec na FB, ale na niektorych systemoch zalezi na poradi
podmienok.

Skus podmienku napisat naopak:
... WHERE (machine = 210) AND (new_value LIKE '%Oprava stroje%')

Lucky.


Odpovedá: Michal Bilcik

30. 7. 2004 9:31

Nazdar

Friday, July 30, 2004, 9:50:13 AM, you wrote:

>>> WHERE (new_value LIKE '%Oprava stroje%') AND (machine = 210)

>> dve sekundy na vyhladanie zaznamov, ktore kdekolvek v sebe
>> obsahuju hladany retazec - to je teda naozaj rekordny cas.

JN> Spis bych rek, ze FB vyhodnocuje podminku striktne zleva doprava, ale
JN> MSSQL si zjisti, ze bude vyhodnejsi vyhledat tech par zaznamu
JN> vyhovujicich podmince 'machine' (asi ma index) a jen tam smejdit po
JN> Oprave.

Samozrejme ze to vsetky DB stroje to takto standardne robia (FB aj MSSQL),
najpr sa snazia odhadnut ktorej podmienky vyhodnotenie bude vyhodnejsie.

V zlozitych dotazoch k spravnemu vysledku vedie vela ciest v akom
poradi vyhodnocovat dany dotaz, databazovy stroj by mal vybrat tu
navyhodnejsiu. Vola sa to execution plan.
Vid. napr:
http://www.cs.mcgill.ca/~kemme/cs421/lecture/421-query-opt.pdf

JN> Otazka je, ktere chovani je lepsi, zda slepe poslouchani programatora,
JN> nebo urcita inteligence. Ja osobne moc chytre programy rad nemam.

No ale z tvojho pohladu je to uplne jedno, ktora podmienka sa prv
vyhodnoti a DB stroju to pomoze urychlit vykonanie dotazu. Bez tejto
"inteligencie" by boli databazy velmi pomale..

--
Michal Bilcik


Odpovedá: Pavel Cisar

30. 7. 2004 9:36

Haj hou!

On 30 Jul 2004 at 10:10, Jan Kostial wrote:

> Nie som znalec na FB, ale na niektorych systemoch zalezi na poradi
> podmienok.

Na poradi u FB nezalezi ani v nejmensim.
 
S pozdravem
Pavel Cisar ( ICQ: 89017288)
Mobil: 724 281429
http://www.ibphoenix.cz
Vse co potrebujete pro Firebird a InterBase



Odpovedá: Pavel Hora

2. 8. 2004 12:53

Jak se da zjistit provadeci plan ve Firebirdu ?

______________________________________________________________
> Od: "Pavel Cisar" <pcb@atlas.cz>
> Komu: delphi-l@clexpert.cz
> CC:
> Datum: Fri, 30 Jul 2004 09:44:12 +0200
> Predmet: Re: pomalost Firebirdu
>
> Haj hou!
>
> On 29 Jul 2004 at 10:45, Josef Zahoralek wrote:
>
> > mam na jednom PC nainstalovan Firebird 1.5.1 (superserver) a MSDE na obou
> > vytvorenou databazi s tabulkou stroje ktera ma asi 13000000 zaznamu - pokud
> > udelam select:
> >
> > SELECT *
> > FROM stroje
> > WHERE (new_value LIKE '%Oprava stroje%') AND (machine = 210)
> >
> > tak na Firebirdu to trva asi 1,5 minuty a na MSDE asi 2 vteriny, Firebird
si
> > vezme asi 9,5 MB RAM a MSDE 380 MB (na PC je 1 GB RAM a Windows2000)
>
> Predpokladam, ze zaznamu s (machine = 210) je jen par a je na nem
> index ? Pak chapu proc to MSDE trva 2s, ale nechapu, proc to FB trva
> 1.5min. Leda ze by db pro Firebird nemela index na machine ? Muzes
> pro zajimavost napsat jaky provadeci plan Firebird pouzil ?
>
> S pozdravem
> Pavel Cisar ( ICQ: 89017288)
> Mobil: 724 281429
> http://www.ibphoenix.cz
> Vse co potrebujete pro Firebird a InterBase
>
>
>
>

--------------------
Leto a sport bez zabran s jednodennimi cockami Focus Dailies! Hrajte letni
SMS hru o pulrocni zasobu cocek Focus Dailies! Vice na
http://user.centrum.cz/redir.php?url=http://www.cz.cibavision.com



Odpovedá: Pavel Cisar

2. 8. 2004 13:03

On 2 Aug 2004 at 13:37, Pavel Hora wrote:

> Jak se da zjistit provadeci plan ve Firebirdu ?

V ISQL prikazem SET PLAN ON. U nasledujicich prikazu je pak vypsan i
plan. Nektere nastroje (jako napr IBExpert) jej zobrazuji
automaticky.

S pozdrave
Pavel Cisar ( ICQ: 89017288)
Mobil: 724 281429
http://www.ibphoenix.cz
Vse co potrebujete pro Firebird a InterBase


Odpovedá: Miso

2. 8. 2004 13:32


----- Original Message -----
From: "Pavel Hora" <phofficial@centrum.cz>


> Jak se da zjistit provadeci plan ve Firebirdu ?

..napr. TIBSQL ma property Plan

Miso